<?php
/**
 * 组件类 - Redis
 * 
 * @version $Id: Redis.php 416 2013-01-17 07:01:31Z linsir123 $
 * @package Nosql
 */
class LpRedis
{
	/**
	 * @var 实例
	 */
	private $_cache;
	
	/**
	 * 构造函数
	 */
	public function __construct($dsnNumber = 0)
	{
		$conf = App::O('main.redisServer');
		if (is_array($conf[0])) 
			$conf = $conf[$dsnNumber];
			
		if ( ! isset($conf[2])) 
			$conf[2] = 5;
			
		///
		try {
			$this->_cache = new Redis();
			$this->_cache->connect($conf[0], $conf[1]) 
				&& $this->_cache->select($conf[2]);
				
		} catch (Exception $e) {
			throw new Exception("[Redis] 无法连接至服务器({$conf[0]}:{$conf[1]}[{$conf[2]}])");
		}
	}
	
	/**
	 * 析构函数
	 */
	function __destruct()
	{
		$this->_cache->close();
	}
	
	/**
	 * 重载方法(具体需要查看提供的API)
	 * 
	 * @param string $method 方法名
	 * @param array $params 参数列表
	 * @return mixed
	 */
	public function __call($method, $params = array())
	{
		if (method_exists($this->_cache, $method)) 
			return call_user_func_array(array($this->_cache, $method), $params);
			
		///
		throw new Exception("[Redis] 方法不存在({$method})");
	}
}
